package com.jijs.guava.collect;

import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;


/**
 * google guava的BiMap：双向Map
 * 我们知道Map是一种键值对映射，这个映射是键到值的映射，而BiMap首先也是一种Map，他的特别之处在于，既提供键到值的映射，也提供值到键的映射，所以它是双向Map.
 * BiMap的常用实现有：
 * HashBiMap: key 集合与 value 集合都有 HashMap 实现
 * EnumBiMap: key 与 value 都必须是 enum 类型
 * ImmutableBiMap: 不可修改的 BiMap
 */
public class BiMapTest {
    /**
     * 星期中英文互换
     *
     * @Description
     */
    public static void testBiMap() {
        BiMap<String, String> weekNameMap = HashBiMap.create();
        weekNameMap.put("星期一", "Monday");
        weekNameMap.put("星期二", "Tuesday");
        weekNameMap.put("星期三", "Wednesday");
        weekNameMap.put("星期四", "Thursday");
        weekNameMap.put("星期五", "Friday");
        weekNameMap.put("星期六", "Saturday");
        weekNameMap.put("星期日", "Sunday");
        weekNameMap.put("星期七", "Sunday");

        System.out.println("星期日的英文名是" + weekNameMap.get("星期日"));
        System.out.println("Sunday的中文是" + weekNameMap.inverse().get("Sunday"));
        System.out.println("反转前:" + weekNameMap);
        System.out.println("反转后:" + weekNameMap.inverse());
    }

    public static void main(String[] args) {
        testBiMap();
    }
}